Modern electronic devices increasingly include the ability to deliver video or still image content to users. Battery-powered handheld electronic devices such as personal digital assistants (PDAs), portable music players, and cellular telephones frequently offer image viewing and recording capabilities, as well as video playback and recording capabilities (e.g., the ability to watch entire feature length movies or record video scenes). Because images often involve large amounts of digital data, the storage, review and playback of these images and movies on a battery-powered handheld device may present unique challenges. One such challenge involves efficient storage and retrieval of these images into and out of the dynamic random access memory (DRAM) of the device.
Computers store and playback images stored within DRAMs in digital format (i.e., as a collection of 1s and 0s), and these DRAMs are organized in rows of a predetermined size (e.g., 1024 bytes of data). The smallest portion of a digital image is the “pixel”, and pixels may require one or more bytes of space in memory. For example, in a video graphics array (VGA) display mode (a standard display mode) the screen size is 480 rows of pixels by 640 columns of pixels, with 2 bytes of data per pixel. Hence, in VGA mode each pixel row requires approximately 1280 bytes, which is more than the 1024 bytes of data space available in a single DRAM row. Thus, each pixel row on the screen may span more than one DRAM row. Furthermore, because processing of objects within images spanning multiple pixel rows on a screen tends to be based on the inherent spatial locality of a set of pixels, even more full and/or partial rows may be accessed when an object is processed.
Each time a new DRAM row is accessed, an overhead price is paid in terms of memory performance and power consumption. Specifically, each time a new DRAM row is accessed, the entire DRAM row must be refreshed regardless of whether the entire row of data or only a fraction of the row of data is desired. As a result, accesses to DRAM take longer because DRAM rows must be refreshed before completing the memory operation, which reduces the overall bandwidth of the memory interface. Furthermore, each refresh operation increases the power consumption of RAM, which is a concern for battery-powered handheld devices.
In an attempt at limiting this overhead, image objects are often stored in RAM in a specific arrangement based on the distribution of accesses to the object. In video, objects that appear sequentially in time are optimally grouped in memory. These optimized storage arrangements, however, are usually specific to the hardware and software of the particular system, which makes any efficiencies gained also specific to that particular system and difficult to integrate with other optimizations, ultimately increasing the time-to-market of electronic products with image and video capabilities.